<?php
/**
 * Created by PhpStorm.
 * User: 17208
 * Date: 2020/9/29
 * Time: 11:40
 */
namespace app\server;
use app\server\taobao\ErrorCode;
use app\utility\WeChatApp;
use EasyWeChat\Kernel\Messages\News;
use EasyWeChat\Kernel\Messages\NewsItem;
use extend\Common;
use extend\Log;

class ServerWeChat
{
    public static function replyMessage(){
        $app = WeChatApp::get();
        $app->server->push(function ($message) {
            $log = Log::getInstance('wechat');
            $log->info(json_encode($message));
            switch ($message['MsgType']) {
                case 'event':
                    return self::eventMessage($message);
                case 'text':
                    return self::textMessage($message);
                case 'image':
                    return '收到图片消息';
                    break;
                case 'voice':
                    return '收到语音消息';
                    break;
                case 'video':
                    return '收到视频消息';
                    break;
                case 'location':
                    return '收到坐标消息';
                    break;
                case 'link':
                    return '收到链接消息';
                    break;
                case 'file':
                    return '收到文件消息';
                // ... 其它消息
                default:
                    return '收到其它消息';
                    break;
            }
        });
        $response = $app->server->serve();
        $response->send();
    }
    private static function textMessage($message){
        list($code,$content) = self::matchingContent($message['Content']);
        switch ($code){
            // 淘口令
            case 1:
                list($code,$message) = ServerTaoBao::parseTkl2Url($content);
                switch ($code){
                    case -1: return $message;   //系统错误
                    case 0 :return $message;    // 这个正常返回
                    case 1 :return $message;    // 淘口令错误
                    case 2: return ErrorCode::$errorMsg[ErrorCode::$noCoupon];  // 商家无设置优惠卷
                    default: return $message;
                }
                break;
            // 关键词搜索
            case 2:
                $items = [
                    new NewsItem([
                        'title'       => "亲，您要{$content}所有商品优惠卷都整合在这里",
                        'description' => '点击打开优惠卷商城找到喜欢的商品',
                        'url'         => "http://taobao.blscy.cn/view/app/dist/index.html#/search?keyword={$content}",
                        'image'       => '',
                    ]),
                ];
                return new News($items);
            // 商城
            case 3:
                $items = [
                    new NewsItem([
                        'title'       => "亲，您要的惠卷都整合在这里",
                        'description' => '点击打开优惠卷商城找到喜欢的商品',
                        'url'         => "http://taobao.blscy.cn/view/app/dist/index.html",
                        'image'       => '',
                    ]),
                ];
                return new News($items);
            // 匹配失败
            default:
                return ErrorCode::$errorMsg[ErrorCode::$passwordError];
        }
    }
    private static function eventMessage($message){
        switch ($message['Event']){
            case 'subscribe':
                return '谢谢你这么好看，还来关注我！
这里隐藏着淘宝内部优惠，活动，内部员工优惠购买清单！

使用方法：

1.优惠卷查询方法
打开淘宝商品后，点击分享，在点击复制连接发送给我查询!系统自动生成淘口令复制到淘宝打开领取优惠卷

2.查找优惠卷商品
请发：找XX【比如：找口红】

3.内部优惠卷活动商城入口
请发：商城';
                break;
            default:
                break;
        }
    }





    /** 内部实现方法 */
    public static function matchingContent($content){
        $password = Common::tbkParsePassword($content);
        if($password) return [1,$password];

        $keyword = Common::findKeyword($content);
        if($keyword) return [2,$keyword];

        if($content == '商城') return [3,''];


        return [0,'匹配失败'];
    }
}